package RIP;

/**
 * Esta classe contem as informacoes de um pacote. Basicamente eh atraves dela que os nodes trocam dados
 */
public class pacote implements java.io.Serializable {

    //Id da origem
    private int sourceid;
    //Id do destino
    private int destid;
    //Tabela de distancia a ser enviada
    private MenorCaminho[][] distanceTable;
    //ACK acusando o recebimento
    private String ACK;

    //Construtor monta o pacote a ser enviado
    public pacote(int sourceidParam, int destidParam, MenorCaminho[][] distanceTableRcv) {
        this.sourceid = convertInt2Port(sourceidParam);
        this.destid = convertInt2Port(destidParam);
        this.distanceTable = distanceTableRcv;
    }

    // esse metodo conver um inteiro a um numero da porta equivalente
    // apenas por praticidade... assim podemos usar o "i" em alguns lacos for
    private int convertInt2Port(int destiParam) {
        switch (destiParam) {
            case 0:
                return RIP_Constants.NODE_0_PORT;
            case 1:
                return RIP_Constants.NODE_1_PORT;
            case 2:
                return RIP_Constants.NODE_2_PORT;
            case 3:
                return RIP_Constants.NODE_3_PORT;
            default:
                return 123456789;

        }
    }

    public int getDestid() {
        return destid;
    }

    public void setDestid(int destid) {
        this.destid = destid;
    }

    public int getSourceid() {
        return sourceid;
    }

    public void setSourceid(int sourceid) {
        this.sourceid = sourceid;
    }

    public MenorCaminho[][] getDistanceTable() {
        return distanceTable;
    }

    public void setDistanceTable(MenorCaminho[][] distanceTable) {
        this.distanceTable = distanceTable;
    }

    public String getACK() {
        return ACK;
    }

    public void setACK(String ACK) {
        this.ACK = ACK;
    }
}
